﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LCTMoodle.Service;
using LCTMoodle.Models.ViewModels;
using LCTMoodle.Helper;

namespace LCTMoodle.Controllers
{
    public class TapTinController : Controller
    {
        /// <summary>
        /// Lấy về view hiển thị tập tin để tải
        /// </summary>
        /// <param name="ma">Mã tập tin</param>
        public JsonResult KhoaHoc_Nhom_TapTin(int ma)
        {
            TapTinViewModel tapTin = TapTinService.layTapTinTheoMaTapTin(ma);
            
            //Kiểm tra nếu lấy dữ liệu thất bại
            if (tapTin == null)
            {
                return Json(new
                    {
                        trangThai = "Lấy tập tin thất bại"
                    });
            }

            return Json(new
                {
                    trangThai = "OK",
                    ketQua = ControllerHelper.RenderRazorViewToString("~/Views/TapTin/KhoaHoc_Nhom_TapTin.cshtml", tapTin)
                });
        }

        /// <summary>
        /// Tải tập tin
        /// </summary>
        /// <param name="ma">Mã tập tin</param>
        public FileResult TaiTapTin(int ma)
        {
            //Lấy tập tin
            TapTinViewModel tapTin = TapTinService.layTapTinTheoMaTapTin(ma);

            //Kiểm tra nếu lấy dữ liệu thất bại
            if (tapTin == null)
            {
                return null;
            }

            //Lấy đường dẫn để tải
            string duongDanTapTin = TienIch.layTapTin(tapTin.tenDuongDan);
            return File(duongDanTapTin, tapTin.loaiTapTin, tapTin.tenTapTin);
        }

        /// <summary>
        /// Thêm tập tin
        /// </summary>
        /// <param name="tapTinDang">Tập tin cần thêm</param>
        /// <returns>Mã tập tin vừa thêm</returns>
        [NonAction]
        public static int ThemTapTin(HttpPostedFileBase tapTinDang)
        {
            //Kiểm tra nếu tập tin không tồn tại
            if (tapTinDang.ContentLength != 0)
            {
                TapTinViewModel tapTin = new TapTinViewModel();
                tapTin.tenTapTin = tapTinDang.FileName;
                tapTin.loaiTapTin = tapTinDang.ContentType;

                int maTapTin = TapTinService.themTapTin(tapTin);

                //Kiểm tra nếu lấy dữ liệu thất bại
                if (maTapTin == 0)
                {
                    return 0;
                }

                TienIch.luuTapTin(tapTinDang, maTapTin + "_" + tapTin.tenTapTin);

                return maTapTin;
            }
            return 0;
        }
        
        /// <summary>
        /// Xóa tập tin theo mã tập tin
        /// </summary>
        /// <param name="maTapTin">Mã tập tin</param>
        [NonAction]
        public static bool XoaTapTinTheoMaTapTin(int maTapTin)
        {
            TapTinViewModel tapTin = TapTinService.layTapTinTheoMaTapTin(maTapTin);
            if (tapTin == null)
            {
                return false;
            }

            if (!TapTinService.xoaTapTinTheoMaTapTin(maTapTin))
            {
                return false;
            }
            TienIch.xoaTapTin(tapTin.tenDuongDan);
            return true;
        }
    }
}
